package com.ort.ezcalendar.notificaciones;

import java.util.Calendar;
import java.util.Date;

import com.ort.ezcalendar.persistance.EventHelper;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;

public class ManejadorAlarmas {

	private EventHelper helper;
	private Context contexto;
	private AlarmManager am;

	public ManejadorAlarmas(Context contexto) {
		helper = new EventHelper(contexto);
		this.contexto = contexto;
		am = (AlarmManager) contexto.getSystemService(Context.ALARM_SERVICE);
	}

	public void borrarAlarmas() {
		Intent intento = new Intent(contexto,
				com.ort.ezcalendar.notificaciones.RecibirAlarma.class);
		PendingIntent pi = PendingIntent.getBroadcast(contexto, 0, intento,
				PendingIntent.FLAG_UPDATE_CURRENT);
		am.cancel(pi);
	}

	public void inicializarAlarmas() {
		borrarAlarmas();
		Cursor c = helper.getAllAlarms();
		c.moveToFirst();
		while (!c.isAfterLast()) {
			Date d = helper.getAlarm(c);
			int idEvento = helper.getIdEvento(c);
			agregarAlarma(d, idEvento);
			c.moveToNext();
		}
		c.close();
	}

	public void agregarAlarma(Date fecha, long idEvento) {
		Date ahora = Calendar.getInstance().getTime();
		if (fecha.after(ahora)) {
			Intent intento = new Intent(contexto, RecibirAlarma.class);
			intento.putExtra("id_evento", idEvento);
			Cursor c = helper.getEvento(idEvento);
			c.moveToFirst();
			intento.putExtra("nombre", helper.getName(c));
			intento.putExtra("lugar", helper.getPlace(c));
			PendingIntent pi = PendingIntent.getBroadcast(contexto, 0, intento,
					PendingIntent.FLAG_UPDATE_CURRENT);
			am.set(AlarmManager.RTC_WAKEUP, fecha.getTime(), pi);
			c.close();

		}
	}
	
}
